package proxy

import (
	"dp/foo"
	"dp/hook"
	"fmt"
	// "github.com/bouk/monkey"
)

// FooProxyImpl IFoo接口代理实现
type FooProxyImpl struct {
	ori foo.IFoo
}

// Start 开始
func (f *FooProxyImpl) Start() {
	f.ori.Start()
	fmt.Println("start log!")
}

// Stop 停止
func (f *FooProxyImpl) Stop() {
	f.ori.Stop()
	fmt.Println("stop log!")
}

// NewFooProxyImpl 创建新Foo代理对象
func NewFooProxyImpl() foo.IFoo {
	ori := &foo.FooImpl{}
	return &FooProxyImpl{
		ori: ori,
	}
}

func init() {
	// 更改NewFoo方法值
	hook.Hook(foo.NewFoo, NewFooProxyImpl)
	// monkey.Patch(foo.NewFoo, NewFooProxyImpl)
}
